07LinuxC进程间通信之管道pipe多个写端或者多个读端,案例4(非常重要)

您所在的位置:网站首页 linux 管道读写 07LinuxC进程间通信之管道pipe多个写端或者多个读端,案例4(非常重要)

07LinuxC进程间通信之管道pipe多个写端或者多个读端,案例4(非常重要)

2023-12-13 15:13| 来源: 网络整理| 查看: 265

概述: 实际上我们多进程的管道使用时,是可以同时有多个读端和写端的。但是这个例子在平时不常用。下面我们只演示多个写端和一个读端的案例。

1 一个读端多个写端案例

是否允许,一个pipe有一个写端,多个读端呢?是否允许有一个读端多个写端呢? 前面已经说了,是允许的。

#include #include #include #include #include int main(void) { pid_t pid; int fd[2], i, n; char buf[1024]; int ret = pipe(fd); if(ret == -1){ perror("pipe error"); exit(1); } for(i = 0; i perror("pipe error"); exit(1); } } if (i == 0) { close(fd[0]); write(fd[1], "1.hello\n", strlen("1.hello\n")); } else if(i == 1) { close(fd[0]); write(fd[1], "2.world\n", strlen("2.world\n")); } else { close(fd[1]); //父进程关闭写端,留读端读取数据 //sleep(1);//不加sleep的话,可能兄进程或者弟进程某个写入后,父进程直接读,然后回收兄弟进程后就结束了。导致下一次的数据无法再读取了。 n = read(fd[0], buf, 1024); //从管道中读数据 write(STDOUT_FILENO, buf, n); for(i = 0; i


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3